package uri.model.board;

/**
 * 페이징 처리를 위한 비즈니스 객체
 * 
 * @author KOSTA
 * 
 */
public class PublicBoardPagingBean {
	/**
	 * 현재 페이지
	 */
	private int nowPage = 1;
	private int numberOfContentsPerPage = PublicBoardCommonConstants.CONTENT_NUMBER_PER_PAGE;
	/**
	 * 페이지 그룹당 페이지수
	 */
	private int numberOfPageGroup = PublicBoardCommonConstants.PAGE_NUMBER_PER_PAGEGROUP;
	/**
	 * 현재 db 에 저장된 총 게시물 수
	 */
	private int totalContents;

	public PublicBoardPagingBean(int totalContents) {
		super();
		this.totalContents = totalContents;
	}

	/**
	 * DAO(db) 로부터 총게시물 수를 반환받아 setting 현재 페이지는 client(jsp) 로부터 받아 setting (현재
	 * 페이지 값이 없으면 1로 처리)
	 * 
	 * @param totalContents
	 * @param nowPage
	 */
	public PublicBoardPagingBean(int totalContents, int nowPage) {
		this.totalContents = totalContents;
		this.nowPage = nowPage;
	}

	/**
	 * 현재 페이지 반환
	 * 
	 * @return
	 */
	public int getNowPage() {
		return nowPage;
	}

	/**
	 * 총 페이지 수를 return 한다. 1. 전체 데이터(게시물) % 한 페이지에 보여줄 데이터 개수 => 0 이면 둘을 / 값이 총
	 * 페이지 수 2. 전체 데이터(게시물) % 한 페이지에 보여줄 데이터 개수 => 0보다 크면 둘을 / 값에 +1을 한 값이 총 페이지
	 * 수 게시물수 1 2 3 4 5 6 7 8 9 10 11 12 1페이지 1~5 2페이지 6~10 3페이지 11 ex) 게시물 32 개
	 * , 페이지당 게시물수 5개 -> 7 페이지
	 * 
	 * @return
	 */
	public int getTotalPage() {
		int num=totalContents%numberOfContentsPerPage;
		int totalPage=0;
		if(num==0){
			totalPage=totalContents/numberOfContentsPerPage;
		}else{
			totalPage=totalContents/numberOfContentsPerPage+1;
		}
		return totalPage;
	}
	public int getTotalPageGroup() {
		int num=getTotalPage()%numberOfPageGroup;
		int totalPageGroup=0;
		if(num==0){
			totalPageGroup=getTotalPage()/numberOfPageGroup;
		}else{
			totalPageGroup=getTotalPage()/numberOfPageGroup+1;
		}
		return totalPageGroup;
	}
	public int getNowPageGroup() {
		int nowPageGroup=0;
		int num=getNowPage()%numberOfPageGroup;
		if(num!=0){
			nowPageGroup=getNowPage()/numberOfPageGroup+1;
		}else{
			nowPageGroup=getNowPage()/numberOfPageGroup;
		}
		return nowPageGroup;
	}
	public int getStartPageOfPageGroup() {
		 int startPageOfGroup=getNowPageGroup()*numberOfPageGroup-(numberOfPageGroup-1);
		return startPageOfGroup;
	}
	public int getEndPageOfPageGroup() {
		 int num=getNowPageGroup()*numberOfPageGroup;
		 if(getTotalPage()<num){
			 num=getTotalPage();
		 }
		return num;
	}
	public boolean isNextPageGroup() {
		boolean flag=true;
		if(getTotalPageGroup()==getNowPageGroup()){
			flag=false;
		}
		return flag;
	}

	public boolean isPreviousPageGroup() {
		boolean flag=true;
		if(getNowPageGroup()==1){
			flag=false;
		}
		return flag;
	}
}
